package util;

public class SingleValueGaussian extends Gaussian 
{
	private double value;
	
	public SingleValueGaussian() 
	{
		value = Double.NaN;
	}

	public SingleValueGaussian(double value) 
	{
		this.value = value;
	}

	public SingleValueGaussian(double[] zscores) 
	{
		throw new java.lang.IllegalArgumentException("Single-value Gaussians can only have 1 zscore.");
	}

	public SingleValueGaussian(int size, double mean, double stdev, double pdfMultiplier) 
	{
		throw new java.lang.IllegalArgumentException("Single-value Gaussians can only have 1 zscore.");
	}

	public SingleValueGaussian(int size, double mean, double stdev) 
	{
		throw new java.lang.IllegalArgumentException("Single-value Gaussians can only have 1 zscore.");
	}

	public SingleValueGaussian(int size, double stdev) 
	{
		throw new java.lang.IllegalArgumentException("Single-value Gaussians can only have 1 zscore.");
	}

	public SingleValueGaussian(double pdfMultiplier, int size, double stdev) 
	{
		throw new java.lang.IllegalArgumentException("Single-value Gaussians can only have 1 zscore.");
	}
	
	@Override
	public double[] getRandomVar()
    {
    	throw new java.lang.UnsupportedOperationException();
    }
	
	@Override
	public double[] getPDF()
	{
		double[] arr = {value};
		
		return arr;
	}
	
	@Override
	public double[][] getNumRandomZScores(int num) throws IllegalArgumentException
    {
    	double[][] xySeries = {{value}};
    	
    	return xySeries;
    }
	
	@Override
    public double getRandomValue()
    {
    	return value;
    }
	
	@Override
	public boolean isEmpty()
    {
    	return (this.value == Double.NaN);
    }
	
	@Override
	public void scaleZScores(double scale)
    {
    	value *= scale;
    }
	
	@Override
    public double getMean()
    {
    	return this.value;
    }
    
	@Override
    public double getStandardDeviation()
    {
    	return this.value;
    }
    
	@Override
    public int getSize()
    {
    	return 1;
    }

}
